const fs = require('fs').promises;
const path = require('path');
const { Document, Packer, Paragraph, TextRun } = require('docx');

async function createDocxFile(filePath, content) {
  try {
    // 检查文件是否存在
    await fs.access(filePath);
    console.log('文件已存在，无需创建');
  } catch (err) {
    if (err.code === 'ENOENT') {
      // 创建文档内容
      const doc = new Document({
        sections: [{ properties: {}, children: [new Paragraph(content)] }],
      });

      // 生成 Buffer 并写入文件
      const buffer = await Packer.toBuffer(doc);
      await fs.writeFile(filePath, buffer);
      console.log('文件已创建并写入数据');
    } else {
      throw err;
    }
  }
}

// 调用函数
const filePath = path.join(__dirname, 'example.docx');
createDocxFile(filePath, {
  children: [
    new TextRun('异步方式创建的 .docx 文档'),
    new TextRun({ text: '（异步写入）', italics: true }),
  ],
});